<?php
/**
 * @author jonathan <jo.link.noir@gmail.com>
 * @version 1.0: jo_link_noir
 * @date 27-05-2010
 */
class SW_Race
{
	/** @var int */
	const EVERYTHING_BY_INDEX = 127;

	/** @var string */
	const EVERYTHING_BY_NAME = 'everything';

	/** @var string */
	const INDEX = 'race';


	/** @var array : {index => name_race, ...}*/
	static protected $name = array();

	/** @var array : {name_race => index, ...}*/
	static protected $index = array();


	/**
	 * @param array $races
	 */
	static public function init(array $races)
	{
		self::$name = $races;
		self::$index = array_flip(self::$name);
	}

	/**
	 * Indique si les races ont étés définit
	 * @return bool
	 */
	static public function defined()
	{
		return !empty(self::$name);
	}

	/**
	 * Retoune true si l'index existe
	 * @param int $index
	 * @return bool
	 */
	static public function existsIndex($index)
	{
		return isset(self::$name[$index]);
	}

	/**
	 * Retoune true si le nom existe
	 * @param string $name
	 * @return bool
	 */
	static public function existsName($name)
	{
		return isset(self::$index[$name]);
	}

	/**
	 * Retourne l'index du nom
	 * @param string $name
	 */
	static public function getIndex($name)
	{
		return self::$index[$name];
	}

	/**
	 * Retourne le nom de l'index
	 * @param int $index
	 */
	static public function getName($index)
	{
		return self::$name[$index];
	}

	/**
	 * Retourne un tableau avec comme clé les index et comme valeur les noms
	 * @return array: {index => name_race, ...}
	 */
	static public function getAll()
	{
		return self::$name;
	}

	/**
	 * Retourne un tableau avec comme clé les noms et comme valeur les index
	 * @return array: {index => name_race, ...}
	 */
	static public function getAllIndex()
	{
		return self::$index;
	}
}